package com.lms.collection.queue;

import java.util.ArrayDeque;

/**
 * @Author: 李孟帅
 * @CreateTime: 2020-06-20 16:42
 * @Description:
 */
public class ArrayDequeDemo {
    public static void main(String[] args) {
        //构造一个空数组deque，初始容量足以容纳16个元素。
        ArrayDeque<Object> arrayDeque = new ArrayDeque<>();
        //构造一个空数组deque，初始容量足以容纳指定数量的元素。
        ArrayDeque<Object> objects = new ArrayDeque<>(8);

        arrayDeque.add(1);
        arrayDeque.addFirst(2);
        arrayDeque.addFirst(3);
        arrayDeque.addLast(4);
        //检索，但不删除，这个deque的第一个元素。
        Object first = arrayDeque.getFirst();
        //检索，但不删除，这个deque的最后一个元素。
        Object last = arrayDeque.getLast();
        //检索，但不删除，由这个deque表示的队列的头。
        Object element = arrayDeque.element();
        //在此deque的末尾插入指定的元素。
        arrayDeque.offer(5);
        //在此deque前面插入指定的元素。
        arrayDeque.offerFirst(6);
        //在此deque的末尾插入指定的元素。
        arrayDeque.offerLast(7);
        //检索但不删除此deque的第一个元素，如果此deque为空，则返回 null 。
        Object o = arrayDeque.peekFirst();
        //检索但不删除此deque的最后一个元素，或返回 null如果此deque为空）。
        Object o1 = arrayDeque.peekLast();
        //检索并删除由此deque（换句话说，该deque的第一个元素）表示的队列的 null如果此deque为空，则返回 null 。
        Object poll = arrayDeque.poll();
        Object o2 = arrayDeque.pollFirst();
        //检索但不删除此deque的最后一个元素，或返回 null如果此deque为空）。
        Object o3 = arrayDeque.pollLast();
        //从这个deque表示的堆栈中弹出一个元素。
        Object pop = arrayDeque.pop();
        //将元素推送到由此deque表示的堆栈上。
        arrayDeque.push(7);
        arrayDeque.remove();
        arrayDeque.remove(4);
        Object o4 = arrayDeque.removeFirst();
    }
}
